package com.miage.itrading.utils;

import com.miage.itrading.entites.Cotation;


public final class Util {

	public static java.util.Date getDateBySQL(java.sql.Timestamp ts) {
		if (ts.equals(null) == false) {
			return new java.util.Date(ts.getTime());
		} else {
			return null;
		}
	}

	public static java.sql.Timestamp getTimeStampByJavaDate(java.util.Date date) {
		if (date.equals(null) == false) {
			return new java.sql.Timestamp(date.getTime());
		} else {
			return null;
		}
	}

	/**
	 * Récupérer le style CSS lié à la dernière variation de la valeur
	 * 
	 * @param c
	 * @return
	 */
	public static String styleVariationCours(Cotation c) {
		float coursN = 0, coursNmoins1 = 0;
		if (c.getHistoriques().size() > 1) {

			coursN = c.getCotationCourante();
			coursNmoins1 = c.getHistoriques()
					.get(c.getHistoriques().size() - 2).getFermeture();

			float var = 100 * (coursN - coursNmoins1) / coursNmoins1;

			// Le cours est jugé constant
			if ((var > -1 * Const.PAS_DE_VARIATION)
					&& (var < Const.PAS_DE_VARIATION)) {
				return "cours-constant";
			}
			// Le cours a augmenté significativement
			else if (var > Const.PAS_DE_VARIATION) {
				return "cours-augmentation";
			}
			// Le cours a baissé significativement
			else {
				return "cours-baisse";
			}

		} else {
			return "cours-constant";
		}
	}

	/**
	 * La variation d'un cours par rapport à sa clotûre la veille
	 * 
	 * @param c
	 * @return
	 */
	public static float variationCoursFloat(Cotation c) {

		float coursN, coursNmoins1;
		float variationCours = 0;

		if (c.getHistoriques().size() > 1) {
			coursN = c.getCotationCourante();
			coursNmoins1 = c.getHistoriques()
					.get(c.getHistoriques().size() - 2).getFermeture();

			float var = 100 * (coursN - coursNmoins1) / coursNmoins1;

			variationCours = (float) (Math.round(var * 100.0) / 100.0);
		}

		return variationCours;
	}

	/**
	 * La variation d'un cours par rapport à sa clotûre la veille
	 * 
	 * @param c
	 * @return
	 */
	public static String variationCoursString(Cotation c) {

		float coursN, coursNmoins1;
		String variationCours = "0.00 %";

		if (c.getHistoriques().size() > 1) {
			coursN = c.getCotationCourante();
			coursNmoins1 = c.getHistoriques()
					.get(c.getHistoriques().size() - 2).getFermeture();

			float var = 100 * (coursN - coursNmoins1) / coursNmoins1;

			float var2dec = (float) (Math.round(var * 100.0) / 100.0);

			variationCours = Float.toString(var2dec) + " %";

			// Le cours a augmenté significativement
			if (var > Const.PAS_DE_VARIATION) {
				variationCours = "+" + variationCours;
			}
		}

		return variationCours;
	}

}
